﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Data.SqlClient;

namespace LI4.Data
{
    class Localidade
    {
        private Ligacao ligacao;

        public Localidade()
        {
            ligacao = new Ligacao();
        }

        //nao poe o distrito dentro do objecto localidade
        public ArrayList getLocalidades()
        {
            ArrayList array = new ArrayList();
            SqlDataReader reader;

            ligacao.Select("SELECT cod_localidade,cod_distrito,nome FROM Localidades ORDER BY nome");
            reader = ligacao.mySqlDataReader;

            while (reader.Read())
            {
                Business.Distrito dist = new Business.Distrito();
                dist.CodDistrito = reader.GetInt32(1);
                array.Add(new Business.Localidade(reader.GetInt32(0), dist, reader.GetString(2)));
            }
            reader.Close();
            return array;
        }

        public Business.Localidade getLocalidade(int codigo)
        {
            SqlDataReader reader;
            Data.Distrito distData = new Data.Distrito();

            ligacao.Select("SELECT cod_distrito,nome FROM Localidades where cod_localidade='" + codigo + "'");
            reader = ligacao.mySqlDataReader;
            reader.Read();
            int cod_dist = reader.GetInt32(0);
            string nome = reader.GetString(1);
            reader.Close();
            Business.Distrito dist = distData.getDistrito(cod_dist);

            Business.Localidade local = new Business.Localidade(codigo, dist, nome);

            return local;
        }

        public ArrayList getLocalidadesCod()
        {

            ArrayList array = new ArrayList();

            SqlDataReader reader;



            ligacao.Select("SELECT cod_localidade,cod_distrito,nome FROM Localidades ORDER BY cod_localidade");

            reader = ligacao.mySqlDataReader;



            while (reader.Read())
            {

                Business.Distrito dist = new Business.Distrito();

                dist.CodDistrito = reader.GetInt32(1);

                array.Add(new Business.Localidade(reader.GetInt32(0), dist, reader.GetString(2)));

            }

            reader.Close();

            return array;

        }

        public Business.Localidade getLocalidadeNome(string nomel)
        {
            SqlDataReader reader;
            Data.Distrito distData = new Data.Distrito();

            ligacao.Select("SELECT * FROM Localidades where nome='" + nomel + "'");
            reader = ligacao.mySqlDataReader;
            reader.Read();
            int codigo = reader.GetInt32(0);
            int cod_dist = reader.GetInt32(1);
            string nome = reader.GetString(2);
            reader.Close();
            Business.Distrito dist = distData.getDistrito(cod_dist);

            Business.Localidade local = new Business.Localidade(codigo, dist, nome);

            return local;
        }

        public Business.Localidade getLocalidadeDistrito(int codigo)
        {
            SqlDataReader reader;
            Data.Distrito distData = new Data.Distrito();
            Business.Localidade local = new Business.Localidade();
            ligacao.Select("SELECT * FROM Localidades where cod_distrito='" + codigo + "'");
            reader = ligacao.mySqlDataReader;
            if (reader.Read())
            {
                
                int cod_dist = reader.GetInt32(1);
                string nome = reader.GetString(2);
                Business.Distrito dist = distData.getDistrito(cod_dist);

                local = new Business.Localidade(reader.GetInt32(0), dist, nome);
                reader.Close();
            }

            return local;
        }

        public ArrayList getLocalidadesDistrito(int codigo)
        {
            ArrayList array = new ArrayList();
            SqlDataReader reader;
            Data.Distrito distData = new Data.Distrito();
            Business.Localidade local;
            Business.Distrito dist;
            ligacao.Select("SELECT * FROM Localidades where cod_distrito='" + codigo + "';");
            reader = ligacao.mySqlDataReader;
            while (reader.Read())
            {
                int cod_loc = reader.GetInt32(0);
                int cod_dist = reader.GetInt32(1);
                string nome = reader.GetString(2);
                dist = distData.getDistrito(cod_dist);

                local = new Business.Localidade(cod_loc, dist, nome);
                array.Add(local);
            }
            reader.Close();
            return array;
        }

        public ArrayList getLocalidadesNome(string nomel)
        {
            ArrayList array = new ArrayList();
            SqlDataReader reader;
            Data.Distrito distData = new Data.Distrito();
            Business.Localidade local;
            Business.Distrito dist;
            ligacao.Select("SELECT * FROM Localidades where nome like'%" + nomel + "%';");
            reader = ligacao.mySqlDataReader;
            while (reader.Read())
            {
                int cod_loc = reader.GetInt32(0);
                int cod_dist = reader.GetInt32(1);
                string nome = reader.GetString(2);
                dist = distData.getDistrito(cod_dist);

                local = new Business.Localidade(cod_loc, dist, nome);
                array.Add(local);
            }
            reader.Close();
            return array;
        }
    }
}
